{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要的各种包\n",
    "import pandas as pd\n",
    "from pandas.core.api import DataFrame\n",
    "from pyreadstat import pyreadstat\n",
    "import mytools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 打开数据文档\n",
    "df0,metadata =pyreadstat.read_sav(\"indentity问卷数据原始数据.sav\",\n",
    "apply_value_formats=True)\n",
    "# 使用自定义工具包中的函数读取spss格式文件\n",
    "df1 = mytools.read_spss(\"indentity问卷数据原始数据.sav\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 清理数据\n",
    "## 清理空白值\n",
    "### 查看所有空白值\n",
    "temp = df1[df1.isnull().T.any()]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "使用dropna方法删除空值\n",
    "1. axis ，⽤于指定操作⾏还是列。 0 代表⾏， 1 代表列，默认为 0 。\n",
    "2. how ，其值为 \"any\" 和 \"all\" ， \"any\" 表⽰只要有空值，就删除。 \"all\"\n",
    "表⽰⼀⾏或⼀列的所有值为空才删除。默认为 \"any\" 。\n",
    "3. thresh ，表⽰保留⾄少含有 n 个⾮ na 数值的⾏或列。默认为 None 。\n",
    "4. subset ，⽤来指定在那些列中查找缺失值。例如\n",
    "df.dropna(subset=['name', 'born']) 表⽰删除在 'name' 和 'born' 列含\n",
    "有缺失值的⾏。默认为 None 。\n",
    "5. inplace ，表⽰是否直接在原DataFrame修改。默认为 False ，即不修改原\n",
    "数据框。\n",
    "\n",
    "\"\"\"\n",
    "df2 = df1.dropna(thresh=15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如果要删除所有空值，执行下面语句即可\n",
    "df3 = df2.dropna()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "## 删除重复值\n",
    "df4 = df3.drop_duplicates(subset=['问卷编号'],keep='first')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>问卷编号</th>\n",
       "      <td>float64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>调查员</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>民族</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>政治面貌</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>年级</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您觉得自己是个典型的中国人吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>与世界其他国家的人相比中国人有自己的特点吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>做为公民，最基本的要求是爱自己的国家</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>都是中华民族的一员</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>为中华民族的历史文化而骄傲</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>与中华民族的命运息息相关</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>你是否了解中华民族的传统节日</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>了解中国历史、地理、政治等</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您觉得中国怎么样</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您认为中国有多少值得自豪的地方</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您认为世界有多少比例的人尊重中国</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>对您而言作为一名中国人有多重要</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会以中国人自豪吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会隐瞒身份吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会打多少分</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>国歌升起</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>世博会</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>中国传统文化</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>发展信心</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>你会为中国运动员呐喊助威</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>遇到灾难时中国人应该伸出援手</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>你愿意加入其他国籍吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>中国人要为祖国统一奋斗吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                              0\n",
       "问卷编号                    float64\n",
       "调查员                      object\n",
       "民族                     category\n",
       "政治面貌                   category\n",
       "年级                     category\n",
       "您觉得自己是个典型的中国人吗         category\n",
       "与世界其他国家的人相比中国人有自己的特点吗  category\n",
       "做为公民，最基本的要求是爱自己的国家     category\n",
       "都是中华民族的一员              category\n",
       "为中华民族的历史文化而骄傲          category\n",
       "与中华民族的命运息息相关           category\n",
       "你是否了解中华民族的传统节日         category\n",
       "了解中国历史、地理、政治等          category\n",
       "您觉得中国怎么样               category\n",
       "您认为中国有多少值得自豪的地方        category\n",
       "您认为世界有多少比例的人尊重中国       category\n",
       "对您而言作为一名中国人有多重要        category\n",
       "会以中国人自豪吗               category\n",
       "会隐瞒身份吗                 category\n",
       "会打多少分                  category\n",
       "国歌升起                   category\n",
       "世博会                    category\n",
       "中国传统文化                 category\n",
       "发展信心                   category\n",
       "你会为中国运动员呐喊助威           category\n",
       "遇到灾难时中国人应该伸出援手         category\n",
       "你愿意加入其他国籍吗             category\n",
       "中国人要为祖国统一奋斗吗           category"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## 检查数据类型\n",
    "\n",
    "### 查看所有变量的数据类型\n",
    "df4.dtypes.to_frame()\n",
    "### 使用dtypes属性可以查看所有变量或指定变量的类型。\n",
    "### 使用to_frame方法的目的在于输出更整洁的文本，非必须。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>问卷编号</th>\n",
       "      <td>int32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>调查员</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>民族</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>政治面貌</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>年级</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您觉得自己是个典型的中国人吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>与世界其他国家的人相比中国人有自己的特点吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>做为公民，最基本的要求是爱自己的国家</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>都是中华民族的一员</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>为中华民族的历史文化而骄傲</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>与中华民族的命运息息相关</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>你是否了解中华民族的传统节日</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>了解中国历史、地理、政治等</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您觉得中国怎么样</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您认为中国有多少值得自豪的地方</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>您认为世界有多少比例的人尊重中国</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>对您而言作为一名中国人有多重要</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会以中国人自豪吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会隐瞒身份吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>会打多少分</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>国歌升起</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>世博会</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>中国传统文化</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>发展信心</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>你会为中国运动员呐喊助威</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>遇到灾难时中国人应该伸出援手</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>你愿意加入其他国籍吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>中国人要为祖国统一奋斗吗</th>\n",
       "      <td>category</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                              0\n",
       "问卷编号                      int32\n",
       "调查员                      object\n",
       "民族                     category\n",
       "政治面貌                   category\n",
       "年级                     category\n",
       "您觉得自己是个典型的中国人吗         category\n",
       "与世界其他国家的人相比中国人有自己的特点吗  category\n",
       "做为公民，最基本的要求是爱自己的国家     category\n",
       "都是中华民族的一员              category\n",
       "为中华民族的历史文化而骄傲          category\n",
       "与中华民族的命运息息相关           category\n",
       "你是否了解中华民族的传统节日         category\n",
       "了解中国历史、地理、政治等          category\n",
       "您觉得中国怎么样               category\n",
       "您认为中国有多少值得自豪的地方        category\n",
       "您认为世界有多少比例的人尊重中国       category\n",
       "对您而言作为一名中国人有多重要        category\n",
       "会以中国人自豪吗               category\n",
       "会隐瞒身份吗                 category\n",
       "会打多少分                  category\n",
       "国歌升起                   category\n",
       "世博会                    category\n",
       "中国传统文化                 category\n",
       "发展信心                   category\n",
       "你会为中国运动员呐喊助威           category\n",
       "遇到灾难时中国人应该伸出援手         category\n",
       "你愿意加入其他国籍吗             category\n",
       "中国人要为祖国统一奋斗吗           category"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df5 = df4.astype({'问卷编号':'int'})\n",
    "df5.dtypes.to_frame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "很有信心     486\n",
       "担忧不好说    279\n",
       "不清楚       54\n",
       "没信心       40\n",
       "Name: 发展信心, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"\"\"\n",
    "异常值清理\n",
    "\n",
    "类别变量异常值的查看及修改\n",
    "\n",
    "使用value_counts方法可以查看类别变量的取值及次数\n",
    "\"\"\"\n",
    "df5['发展信心'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "汉族      363\n",
      "回族      131\n",
      "藏族       50\n",
      "蒙古族      50\n",
      "壮族       47\n",
      "土家族      46\n",
      "维吾尔族     45\n",
      "苗族       34\n",
      "彝族       15\n",
      "白族       15\n",
      "满族       11\n",
      "哈萨克族     10\n",
      "瑶族        8\n",
      "布依族       7\n",
      "侗族        5\n",
      "东乡族       4\n",
      "黎族        3\n",
      "哈尼族       3\n",
      "水族        2\n",
      "仫佬族       2\n",
      "羌族        2\n",
      "畲族        1\n",
      "土族        1\n",
      "其他        1\n",
      "保安族       1\n",
      "裕固族       1\n",
      "毛难族       1\n",
      "Name: 民族, dtype: int64\n",
      "团员    631\n",
      "党员    112\n",
      "群众     95\n",
      "其他     21\n",
      "Name: 政治面貌, dtype: int64\n",
      "大一      306\n",
      "大二      274\n",
      "大三      170\n",
      "大四       94\n",
      "预科       14\n",
      "22.0      1\n",
      "Name: 年级, dtype: int64\n",
      "完全是     391\n",
      "可以算     249\n",
      "一般般     137\n",
      "不太算      56\n",
      "完全不是     26\n",
      "Name: 您觉得自己是个典型的中国人吗, dtype: int64\n",
      "较有特点     354\n",
      "非常有特点    321\n",
      "一般般      126\n",
      "较无特点      34\n",
      "毫无特点      24\n",
      "Name: 与世界其他国家的人相比中国人有自己的特点吗, dtype: int64\n",
      "完全同意     358\n",
      "同意       346\n",
      "有点同意     108\n",
      "不同意       29\n",
      "完全不同意     18\n",
      "Name: 做为公民，最基本的要求是爱自己的国家, dtype: int64\n",
      "完全同意     458\n",
      "同意       279\n",
      "有点同意      83\n",
      "不同意       22\n",
      "完全不同意     17\n",
      "Name: 都是中华民族的一员, dtype: int64\n",
      "同意       339\n",
      "完全同意     230\n",
      "有点同意     200\n",
      "不同意       73\n",
      "完全不同意     17\n",
      "Name: 为中华民族的历史文化而骄傲, dtype: int64\n",
      "同意       336\n",
      "完全同意     270\n",
      "有点同意     165\n",
      "不同意       66\n",
      "完全不同意     22\n",
      "Name: 与中华民族的命运息息相关, dtype: int64\n",
      "比较了解     518\n",
      "完全了解     203\n",
      "不太了解     122\n",
      "完全不了解     16\n",
      "Name: 你是否了解中华民族的传统节日, dtype: int64\n",
      "比较了解     526\n",
      "完全了解     170\n",
      "不太了解     149\n",
      "完全不了解     14\n",
      "Name: 了解中国历史、地理、政治等, dtype: int64\n",
      "挺好     472\n",
      "一般般    194\n",
      "十分棒    140\n",
      "较差      38\n",
      "很差劲     15\n",
      "Name: 您觉得中国怎么样, dtype: int64\n",
      "很多     396\n",
      "特别多    194\n",
      "有一些    193\n",
      "很少      62\n",
      "特别少     14\n",
      "Name: 您认为中国有多少值得自豪的地方, dtype: int64\n",
      "较多比例     408\n",
      "不多的比例    233\n",
      "大多数比例    173\n",
      "极少比例      45\n",
      "Name: 您认为世界有多少比例的人尊重中国, dtype: int64\n",
      "比较重要    342\n",
      "十分重要    305\n",
      "一般般     160\n",
      "不太重要     42\n",
      "毫不重要     10\n",
      "Name: 对您而言作为一名中国人有多重要, dtype: int64\n",
      "会      412\n",
      "有些     247\n",
      "无所谓    126\n",
      "不太会     53\n",
      "不会      21\n",
      "Name: 会以中国人自豪吗, dtype: int64\n",
      "绝对不会       485\n",
      "可能会        124\n",
      "也许会也许不会    114\n",
      "很可能不会       76\n",
      "一定会         60\n",
      "Name: 会隐瞒身份吗, dtype: int64\n",
      "六十到八十    411\n",
      "八十到一百    237\n",
      "四十到六十    157\n",
      "20~40     28\n",
      "零到二十      26\n",
      "Name: 会打多少分, dtype: int64\n",
      "比较激动      347\n",
      "感到非常激动    255\n",
      "一般        200\n",
      "没感觉        56\n",
      "5.0         1\n",
      "Name: 国歌升起, dtype: int64\n",
      "感到自豪    472\n",
      "比较好     235\n",
      "一般      128\n",
      "没感觉      23\n",
      "5.0       1\n",
      "Name: 世博会, dtype: int64\n",
      "富有内涵，意义深刻    612\n",
      "比较肯定         221\n",
      "古板，跟不上潮流      26\n",
      "Name: 中国传统文化, dtype: int64\n",
      "很有信心     486\n",
      "担忧不好说    279\n",
      "不清楚       54\n",
      "没信心       40\n",
      "Name: 发展信心, dtype: int64\n",
      "肯定会        482\n",
      "大多数情况下会    279\n",
      "不一定         77\n",
      "绝对不会        21\n",
      "Name: 你会为中国运动员呐喊助威, dtype: int64\n",
      "很赞同     375\n",
      "赞同      341\n",
      "不一定     105\n",
      "不赞同      23\n",
      "很不赞同     15\n",
      "Name: 遇到灾难时中国人应该伸出援手, dtype: int64\n",
      "不加入       314\n",
      "其他        251\n",
      "做外籍华人     247\n",
      "毫不犹豫加入     47\n",
      "Name: 你愿意加入其他国籍吗, dtype: int64\n",
      "赞同      389\n",
      "很赞同     326\n",
      "不一定     100\n",
      "不赞同      32\n",
      "很不赞同     11\n",
      "55.0      1\n",
      "Name: 中国人要为祖国统一奋斗吗, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "\"\"\"列出所有类别变量\"\"\"\n",
    "for col in df5.columns[df5.dtypes=='category']:\n",
    "    print(df5[col].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "汉族      363\n",
      "回族      131\n",
      "藏族       50\n",
      "蒙古族      50\n",
      "壮族       47\n",
      "土家族      46\n",
      "维吾尔族     45\n",
      "苗族       34\n",
      "彝族       15\n",
      "白族       15\n",
      "满族       11\n",
      "哈萨克族     10\n",
      "瑶族        8\n",
      "布依族       7\n",
      "侗族        5\n",
      "东乡族       4\n",
      "黎族        3\n",
      "哈尼族       3\n",
      "水族        2\n",
      "仫佬族       2\n",
      "羌族        2\n",
      "畲族        1\n",
      "土族        1\n",
      "其他        1\n",
      "保安族       1\n",
      "裕固族       1\n",
      "毛难族       1\n",
      "Name: 民族, dtype: int64\n",
      "团员    631\n",
      "党员    112\n",
      "群众     95\n",
      "其他     21\n",
      "Name: 政治面貌, dtype: int64\n",
      "大一      306\n",
      "大二      274\n",
      "大三      170\n",
      "大四       94\n",
      "预科       14\n",
      "22.0      1\n",
      "Name: 年级, dtype: int64\n",
      "完全是     391\n",
      "可以算     249\n",
      "一般般     137\n",
      "不太算      56\n",
      "完全不是     26\n",
      "Name: 您觉得自己是个典型的中国人吗, dtype: int64\n",
      "较有特点     354\n",
      "非常有特点    321\n",
      "一般般      126\n",
      "较无特点      34\n",
      "毫无特点      24\n",
      "Name: 与世界其他国家的人相比中国人有自己的特点吗, dtype: int64\n",
      "完全同意     358\n",
      "同意       346\n",
      "有点同意     108\n",
      "不同意       29\n",
      "完全不同意     18\n",
      "Name: 做为公民，最基本的要求是爱自己的国家, dtype: int64\n",
      "完全同意     458\n",
      "同意       279\n",
      "有点同意      83\n",
      "不同意       22\n",
      "完全不同意     17\n",
      "Name: 都是中华民族的一员, dtype: int64\n",
      "同意       339\n",
      "完全同意     230\n",
      "有点同意     200\n",
      "不同意       73\n",
      "完全不同意     17\n",
      "Name: 为中华民族的历史文化而骄傲, dtype: int64\n",
      "同意       336\n",
      "完全同意     270\n",
      "有点同意     165\n",
      "不同意       66\n",
      "完全不同意     22\n",
      "Name: 与中华民族的命运息息相关, dtype: int64\n",
      "比较了解     518\n",
      "完全了解     203\n",
      "不太了解     122\n",
      "完全不了解     16\n",
      "Name: 你是否了解中华民族的传统节日, dtype: int64\n",
      "比较了解     526\n",
      "完全了解     170\n",
      "不太了解     149\n",
      "完全不了解     14\n",
      "Name: 了解中国历史、地理、政治等, dtype: int64\n",
      "挺好     472\n",
      "一般般    194\n",
      "十分棒    140\n",
      "较差      38\n",
      "很差劲     15\n",
      "Name: 您觉得中国怎么样, dtype: int64\n",
      "很多     396\n",
      "特别多    194\n",
      "有一些    193\n",
      "很少      62\n",
      "特别少     14\n",
      "Name: 您认为中国有多少值得自豪的地方, dtype: int64\n",
      "较多比例     408\n",
      "不多的比例    233\n",
      "大多数比例    173\n",
      "极少比例      45\n",
      "Name: 您认为世界有多少比例的人尊重中国, dtype: int64\n",
      "比较重要    342\n",
      "十分重要    305\n",
      "一般般     160\n",
      "不太重要     42\n",
      "毫不重要     10\n",
      "Name: 对您而言作为一名中国人有多重要, dtype: int64\n",
      "会      412\n",
      "有些     247\n",
      "无所谓    126\n",
      "不太会     53\n",
      "不会      21\n",
      "Name: 会以中国人自豪吗, dtype: int64\n",
      "绝对不会       485\n",
      "可能会        124\n",
      "也许会也许不会    114\n",
      "很可能不会       76\n",
      "一定会         60\n",
      "Name: 会隐瞒身份吗, dtype: int64\n",
      "六十到八十    411\n",
      "八十到一百    237\n",
      "四十到六十    157\n",
      "20~40     28\n",
      "零到二十      26\n",
      "Name: 会打多少分, dtype: int64\n",
      "比较激动      347\n",
      "感到非常激动    255\n",
      "一般        200\n",
      "没感觉        56\n",
      "5.0         1\n",
      "Name: 国歌升起, dtype: int64\n",
      "感到自豪    472\n",
      "比较好     235\n",
      "一般      128\n",
      "没感觉      23\n",
      "5.0       1\n",
      "Name: 世博会, dtype: int64\n",
      "富有内涵，意义深刻    612\n",
      "比较肯定         221\n",
      "古板，跟不上潮流      26\n",
      "Name: 中国传统文化, dtype: int64\n",
      "很有信心     486\n",
      "担忧不好说    279\n",
      "不清楚       54\n",
      "没信心       40\n",
      "Name: 发展信心, dtype: int64\n",
      "肯定会        482\n",
      "大多数情况下会    279\n",
      "不一定         77\n",
      "绝对不会        21\n",
      "Name: 你会为中国运动员呐喊助威, dtype: int64\n",
      "很赞同     375\n",
      "赞同      341\n",
      "不一定     105\n",
      "不赞同      23\n",
      "很不赞同     15\n",
      "Name: 遇到灾难时中国人应该伸出援手, dtype: int64\n",
      "不加入       314\n",
      "其他        251\n",
      "做外籍华人     247\n",
      "毫不犹豫加入     47\n",
      "Name: 你愿意加入其他国籍吗, dtype: int64\n",
      "赞同      389\n",
      "很赞同     326\n",
      "不一定     100\n",
      "不赞同      32\n",
      "很不赞同     11\n",
      "55.0      1\n",
      "Name: 中国人要为祖国统一奋斗吗, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "### 使用自定义函数打印出全部类别变量取值\n",
    "mytools.print_all_cats(df5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 找出异常值并修改\n",
    "df5.query('年级==22')\n",
    "df5.loc[749,'年级'] = '大二'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "df5.query('国歌升起==5')\n",
    "df5.loc[409,'国歌升起'] = '感到非常激动'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "df5.query('世博会==5')\n",
    "df5.loc[158,'世博会'] = '感到自豪'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "df5.query('中国人要为祖国统一奋斗吗==55')\n",
    "df5.loc[188,'中国人要为祖国统一奋斗吗'] = '很赞同'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    859.000000\n",
       "mean     455.071013\n",
       "std      259.316464\n",
       "min        1.000000\n",
       "25%      231.500000\n",
       "50%      460.000000\n",
       "75%      679.500000\n",
       "max      900.000000\n",
       "Name: 问卷编号, dtype: float64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### 查看数值变量的异常值\n",
    "### 使用describe方法对数值变量进行描述统计，可得到最小值、最大值、方差等信息\n",
    "df5['问卷编号'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "count    859.000000\n",
      "mean     455.071013\n",
      "std      259.316464\n",
      "min        1.000000\n",
      "25%      231.500000\n",
      "50%      460.000000\n",
      "75%      679.500000\n",
      "max      900.000000\n",
      "Name: 问卷编号, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "mytools.print_all_int(df5)\n",
    "mytools.print_all_float(df5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "## 逻辑一致性清理\n",
    "c1 = '会以中国人自豪吗 == \"会\" and 会隐瞒身份吗 == \"一定会\"'\n",
    "temp = df5.query(c1)[['会以中国人自豪吗','会隐瞒身份吗']]\n",
    "df6 = df5.drop(temp.index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "c2 = '对您而言作为一名中国人有多重要 == \"十分重要\" and 你愿意加入其他国籍吗 == \"毫不犹豫加入\"'\n",
    "temp = df6.query(c2)[['对您而言作为一名中国人有多重要','你愿意加入其他国籍吗']]\n",
    "df7 = df6.drop(temp.index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据清理完毕\n",
    "df = df7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 描述统计\n",
    "## 单变量描述统计\n",
    "### 无序类别变量（定类变量）描述统计，\n",
    "### 可使用频数频率表、众数、柱状图等方式进行描述\n",
    "result = df['政治面貌'].value_counts()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "b =pd.DataFrame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>政治面貌</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>团员</td>\n",
       "      <td>605</td>\n",
       "      <td>73.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>党员</td>\n",
       "      <td>106</td>\n",
       "      <td>12.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>群众</td>\n",
       "      <td>94</td>\n",
       "      <td>11.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>其他</td>\n",
       "      <td>18</td>\n",
       "      <td>2.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>总和</td>\n",
       "      <td>823</td>\n",
       "      <td>100.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  政治面貌   个数    百分比\n",
       "0   团员  605   73.5\n",
       "1   党员  106   12.9\n",
       "2   群众   94   11.4\n",
       "3   其他   18    2.2\n",
       "4   总和  823  100.0"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b['政治面貌'] = df['政治面貌'].value_counts().index\n",
    "b['个数'] = df['政治面貌'].value_counts().values\n",
    "b['百分比'] = df['政治面貌'].value_counts(normalize=True).values * 100\n",
    "b['百分比'] = b['百分比'].apply(lambda x: round(x,1))\n",
    "total_row = pd.Series({'政治面貌':'总和','个数':b['个数'].sum(),'百分比':b['百分比'].sum()}).to_frame().T\n",
    "pd.concat([b,total_row],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>政治面貌</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>团员</td>\n",
       "      <td>605</td>\n",
       "      <td>73.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>党员</td>\n",
       "      <td>106</td>\n",
       "      <td>12.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>群众</td>\n",
       "      <td>94</td>\n",
       "      <td>11.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>其他</td>\n",
       "      <td>18</td>\n",
       "      <td>2.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>总和</td>\n",
       "      <td>823</td>\n",
       "      <td>100.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  政治面貌   个数     百分比\n",
       "0   团员  605   73.51\n",
       "1   党员  106   12.88\n",
       "2   群众   94   11.42\n",
       "3   其他   18    2.19\n",
       "4   总和  823  100.00"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mytools.gen_percent_table(df,'政治面貌')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>民族</th>\n",
       "      <th>个数</th>\n",
       "      <th>百分比</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>汉族</td>\n",
       "      <td>342</td>\n",
       "      <td>41.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>回族</td>\n",
       "      <td>127</td>\n",
       "      <td>15.43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>藏族</td>\n",
       "      <td>49</td>\n",
       "      <td>5.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>蒙古族</td>\n",
       "      <td>49</td>\n",
       "      <td>5.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>壮族</td>\n",
       "      <td>47</td>\n",
       "      <td>5.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>土家族</td>\n",
       "      <td>43</td>\n",
       "      <td>5.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>维吾尔族</td>\n",
       "      <td>42</td>\n",
       "      <td>5.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>苗族</td>\n",
       "      <td>32</td>\n",
       "      <td>3.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>彝族</td>\n",
       "      <td>15</td>\n",
       "      <td>1.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>白族</td>\n",
       "      <td>15</td>\n",
       "      <td>1.82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>满族</td>\n",
       "      <td>11</td>\n",
       "      <td>1.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>哈萨克族</td>\n",
       "      <td>10</td>\n",
       "      <td>1.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>瑶族</td>\n",
       "      <td>8</td>\n",
       "      <td>0.97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>布依族</td>\n",
       "      <td>7</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>侗族</td>\n",
       "      <td>5</td>\n",
       "      <td>0.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>东乡族</td>\n",
       "      <td>4</td>\n",
       "      <td>0.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>黎族</td>\n",
       "      <td>3</td>\n",
       "      <td>0.36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>水族</td>\n",
       "      <td>2</td>\n",
       "      <td>0.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>仫佬族</td>\n",
       "      <td>2</td>\n",
       "      <td>0.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>羌族</td>\n",
       "      <td>2</td>\n",
       "      <td>0.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>哈尼族</td>\n",
       "      <td>2</td>\n",
       "      <td>0.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>畲族</td>\n",
       "      <td>1</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>土族</td>\n",
       "      <td>1</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>其他</td>\n",
       "      <td>1</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>保安族</td>\n",
       "      <td>1</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>裕固族</td>\n",
       "      <td>1</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>毛难族</td>\n",
       "      <td>1</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>总和</td>\n",
       "      <td>823</td>\n",
       "      <td>100.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      民族   个数     百分比\n",
       "0     汉族  342   41.56\n",
       "1     回族  127   15.43\n",
       "2     藏族   49    5.95\n",
       "3    蒙古族   49    5.95\n",
       "4     壮族   47    5.71\n",
       "5    土家族   43    5.22\n",
       "6   维吾尔族   42    5.10\n",
       "7     苗族   32    3.89\n",
       "8     彝族   15    1.82\n",
       "9     白族   15    1.82\n",
       "10    满族   11    1.34\n",
       "11  哈萨克族   10    1.22\n",
       "12    瑶族    8    0.97\n",
       "13   布依族    7    0.85\n",
       "14    侗族    5    0.61\n",
       "15   东乡族    4    0.49\n",
       "16    黎族    3    0.36\n",
       "17    水族    2    0.24\n",
       "18   仫佬族    2    0.24\n",
       "19    羌族    2    0.24\n",
       "20   哈尼族    2    0.24\n",
       "21    畲族    1    0.12\n",
       "22    土族    1    0.12\n",
       "23    其他    1    0.12\n",
       "24   保安族    1    0.12\n",
       "25   裕固族    1    0.12\n",
       "26   毛难族    1    0.12\n",
       "27    总和  823  100.00"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mytools.gen_percent_table(df,'民族')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEQAAANnCAYAAAA4Go01AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAB7CAAAewgFu0HU+AABvq0lEQVR4nOzdeZjVZf0//ucMw46sEi6gKK6VlnuKuaS4L7nvpKUVuWu5fDI1MVNzLUsTl8xUTMvI1BCXNFzD3JFcEgQhREC2YYCZOb8//DFfRwYY9oH343Fd53I49/Y6XB5m5nnu9/0uK5VKpQAAAAAUSPmKLgAAAABgeROIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFM5yC0T69euXsrKyjBw5coH9xo8fn379+qVHjx5p2bJlNtlkk1x33XWpra1d4Lh///vfOeigg9KlS5e0bt06O+ywQx555JGl+AoAAACAVUVZqVQqLetFrrjiipx33nlJkvfffz89e/ZssN+oUaOy4447ZsyYMZ8WV1aWueX17ds3d9xxR4PjHnnkkRx44IGZM2dOvXFlZWUZMGBAvvOd7yzlVwQAAACszJb5DpFrrrkm559//kL7zZkzJ/vss0/GjBmTLl265C9/+UvmzJmTESNG5Ktf/Wp+//vf5957751n3LvvvptDDz00c+bMyRZbbJFXXnkl1dXVGTx4cDp27JjTTjst77///rJ4aQAAAMBKapkFIpWVlTnqqKNy9tlnp3v37gvtf/PNN2f48OEpKyvLAw88kAMPPDDNmjXLxhtvnD/96U+pqKjIGWeckZqamnrjzj///FRWVqZbt24ZMmRIvvKVr6S8vDx77LFHrr/++lRWVubcc89dVi8TAAAAWAkts0Dk4osvzsCBA7PddtvlxRdfXGj/m266KUmy33775etf/3q9tvXXXz8HHXRQ/ve//+XZZ5+te/6jjz7Kn//85yTJOeecky5dutQbd9RRR2WttdbKQw89lKqqqiV9SQAAAMAqYpkFIuXl5enfv3+GDh2aNdZYY4F9J0+enDfeeCNJcvjhhzfYZ5999kmSegelPvPMM3WHrR522GHzjKmoqEifPn1SWVmZp59+erFeBwAAALDqqVhWE/fv3z/NmzdvVN9333237uvtt9++wT6bb755kmTEiBHzjOvevXt69Oix0HF77LFHo+qZa+7hrvNTVVWVESNGpFu3bunatWsqKpbZXycAAAAUVnV1dSZMmJAk2WyzzdKqVaslnnOZ/Qbf2DAkSSZOnFg3Zn53oPnCF76QJPVu2zt33EYbbTTfuRsa11jzC1kAAACAFePFF1/MNttss8TzLPO7zDTGrFmzkiTt27dPs2bNGuzTqVOnJMm4cePmGTe3rbHjAAAAgGJrEtd4zA1B2rRpM98+LVq0SJLMnDlzicc11ujRoxfavsMOOyT5NKFac801F3kNAAAAYMHGjRuXbbfdNknStWvXpTJnkwhEWrduneT/hRcNKS//dDNLZWXlEo9rrMbcLniuNddcc5H6AwAAAItuaZ3f2SQumZl7WcvYsWPn22fy5MlJklKpNM+4Dz/8cJHGAQAAAMXWJAKRddZZJ8mnl7X873//a7DP+PHjkyTt2rWbZ9z7778/37kbGgcAAAAUW5MIRFZfffW6cGPYsGEN9nn++eeT/L8QJEm22mqrJMl7772XTz75pNHjAAAAgGJrEoFIkvTp0ydJMnDgwAbbhwwZkiTZcsst655bb7310qtXr1RXV+f++++fZ0xNTU2eeOKJecYBAAAAxdZkApHjjz8+SXLvvffm3//+d722ESNG5IEHHkiS7Lfffg2Ou/TSSzNt2rR6bXfccUfGjh2bioqK7LnnnsumcAAAAGCl02QCkR133DG9e/dOdXV19t133zz88MOZNWtWnnzyyey9996ZPXt2evXqlQMOOKDeuO9973vp2LFjRo0alT322COvvfZaZsyYkVtvvTUnn3xykuToo4/OGmussSJeFgAAANAENYnb7s511113ZaeddsoHH3yQfffdt15bq1atcscdd6R58+b1nu/atWvuvvvuHHzwwXn++efzla98pV77euutl6uuumqZ1w4AAACsPJbbDpFSqZRSqZSePXvOt8+6666bYcOG5fjjj0+LFi3qnt92223z9NNPp3fv3g2O23vvvfP8889nl112qXuuvLw8hx12WJ577rl07dp1ab0MAAAAYBVQViqVSiu6iIZMmTIl77zzTrp27Zp111230ePGjh2bDz/8MOuvv366dOmyDCtMxowZkx49eiRJRo8ene7duy/T9QAAAKCIlsXv303qkpnP6tChQ7beeutFHrfWWmtlrbXWWgYVAQAAAKuKJnOoKgAAAMDyIhABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwmmQg8vjjj2efffZJ165d06JFi3Tv3j277LJLbrvtttTU1DQ4Ztq0aTnvvPPSq1evtGzZMj179sxFF12UWbNmLefqAQAAgKaurFQqlVZ0EZ9144035uSTT87cssrLy1NbW1vX3qdPnwwaNCitW7eue27y5MnZeeed8/rrrydJysrK6sZ/4xvfyODBg1NRUbHUax0zZkx69OiRJBk9enS6d+++1NcAAACAolsWv383qR0i//nPf3LaaaelefPmGTBgQCZNmpQ5c+bkgw8+yOWXX56KiooMGTIkV199db1xRxxxRF5//fW0bt06t912W6qqqjJ69Oj06dMnTzzxxDz9AQAAgGJrUoHIwIEDU11dne9973s58cQT06lTp5SXl6dHjx4599xzc+qppyZJHnzwwboxDz30UIYMGZIkGTBgQE444YS6y2zuu+++dOrUKRdffHEmTpy4Ql4TAAAA0PQ0qUDkww8/TJJsuOGGDbavs846SZKZM2fWPXfTTTclSTbbbLMcc8wx9fp36NAhJ554YqqqqvLwww8vi5IBAACAlVCTCkTWXnvtJJlvePG3v/0tSbLVVlvVPffPf/4zSXL44Yc3OGafffZJkjzyyCNLrU4AAABg5dakApFjjjkmbdu2zd///vf069cv77zzTmbOnJkRI0bkhBNOyOOPP57WrVvnrLPOSpJMmDAhU6ZMSZJsv/32Dc65+eabJ0lGjBixfF4EAAAA0OQt/VuvLIENNtggjzzySL71rW/lpptuqrscZq5NN900t956azbbbLMkqXcuyEYbbdTgnJ07d05FRUVGjhy5yPWMGTNmge3jxo1b5DkBAACAFa9JBSJJMnXq1FRVVTXY1qZNm3ohxKxZs+q+7tSp03zn7NixYz7++OPMmjUrLVu2bHQtc2/pAwAAAKxamtQlM//4xz9y4IEH1oUe6623Xnbaaae6+wu/9NJLOeSQQ3LllVcmSZo1a1Y3tk2bNvOdt0WLFknqH8YKAAAAFFeT2iFy5plnpqamJmuttVbuvvvu7LzzzkmS2tra3HvvvfnBD36QTz75JJdccklOPPHEtG7dOklSUVGR8vL5Zztz2yorK9OxY8dG1zN69OgFto8bNy7bbrtto+cDAAAAmoYmE4iMGjUqr7zySpLkzjvvrAtDkk8DjaOOOiqdOnXK3nvvnRkzZuTpp5/OTjvtlCSprq7O+PHj061btwbnnjx5cpKkVCotUk1zd6YAAAAAq5Ymc8nMhx9+mCRZbbXVsuuuuzbYZ6+99spqq62W5NPdGZ07d07btm2TJO+//36DY2bMmJEZM2YkSdq1a7e0ywYAAABWQk0mEJkbbDRv3jxlZWUL7T/3ENWtttoqSTJs2LAG+z3//PNJkvbt26dDhw5Lo1QAAABgJddkApENN9wwFRUVmTRpUt1ukc/797//nWnTpiVJdthhhyRJnz59kiQDBw5scMyQIUOSJFtuueXSLhkAAABYSTWZQKRNmzY5/PDDkySXXXbZPO0zZszIySefnCQ59NBDs8466yRJjjvuuJSXl+eZZ57Jgw8+WG/MhAkTMmDAgCTJfvvttyzLBwAAAFYiZaVFPWl0GZo4cWJ22223vPrqq9lmm23Sp0+ftGvXLiNHjsz999+fSZMmZeONN87QoUOz+uqr14075phjcvfdd6ddu3a56aabcvDBB2f48OE56aST8vLLL6djx45577330rlz56Va75gxY9KjR48kn96RxiGsAAAAsPQti9+/m1QgkiRVVVUZMGBA7r///rz55puZMmVKWrdunQ022CAHHnhgzjjjjHnOApk8eXK+8Y1v1N2l5rPKy8szcODAHHbYYUu9VoEIAAAALHuFCEQW14wZM3LhhRfmt7/9bd1dZTbZZJNcd9112XPPPZfJmgIRAAAAWPYEIo0wY8aMjBgxIu3bt8+GG264TNcSiAAAAMCytyx+/65Y4hmamLZt29bdihcAAACgIU3mLjMAAAAAy4tABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCERgCU2dOjXnnXde1ltvvZSXl6dZs2b54he/mIsvvjizZs1a0eUBAADQAIEIJNlll11SVlbWqEfPnj3rxk2bNi29e/fOFVdckZEjR2adddZJly5d8tZbb+WnP/1ptt9++8ycOXOp1fm3v/1tofX94Q9/WGrrAQAArKoEIpCkRYsWadmy5QIfFRUVSZLy8v/3tjn99NPzxhtv5Ktf/WreeuutjBw5MuPHj8+f//zntGvXLi+//HIuu+yypVbn888/nySpqKiYb53NmjVbausBAACsqgQikOTRRx9NVVXVAh977LFHkqRv375Jktdffz233357OnTokIcffjibbLJJkqSsrCwHHXRQfvKTnyTJUt2x8cILLyRJ7rnnnvnWedRRRy219QAAAFZVAhFohEcffTQPP/xwevTokXPPPTdJ8sADD6SioiKnnnpq1lxzzXnGfPWrX02SjB07dqnUUCqV8q9//StJsvXWWy+VOQEAAIqqYkUXAE1dTU1Nzj777CTJlVdemdatWydJLrzwwpx//vmpra1tcNyYMWOSJGusscZSqWP48OGZMmVKunXrVu8cEwAAABadQAQWYsCAAXnjjTey44475sgjj6zX1rx58wbHzJkzJ7/5zW+SJAceeOBSqeO5555Lkuy0005LZT4AAIAic8kMLMDs2bPTv3//JKn778IMHz48++23X1566aWsu+66ueiii5ZKLXMDkalTp2bPPffMGmuskVatWmX99dfPd7/73QwfPnyprAMAAFAEAhFYgN/97ncZO3Zsvva1r2WXXXZZYN/f//736dWrV770pS/l0UcfzdZbb52nnnoqXbp0WSq1PPvss0mSwYMH57nnnsv666+f7bbbLpMmTcqAAQPy1a9+NXfddddSWQsAAGBVJxCB+aipqcmVV16ZJDnvvPMW2r+6ujrTp0+v+/P48ePz2muvLZVaPv744/znP/9Jkpx77rn58MMP8+yzz+app57K6NGjc+KJJ2bOnDn5zne+kw8++GCprAkAALAqE4jAfNx3331577338sUvfjEHHHDAQvt/+9vfzvjx4/Piiy9m//33z+jRo3PQQQflb3/72xLX0qZNmzz22GMZPHhwLr/88qy22mp1bauttlpuvvnmbL/99pk1a1Z++ctfLvF6AAAAqzqBCMzHr371qyTJ97///ZSVlTV63DbbbJNBgwZl//33T01NTb73ve+lpqZmiWpp06ZNvvGNb2SPPfZosL2srCzf+c53kiR///vfl2gtAACAIhCIQAPefvvtPPvss6moqJjnzjKNUVZWlh/96EdJkrFjx+att95a2iXOo3v37kmS//73v8t8LQAAgJWdQAQacPvttydJ9tprr3Tt2rXBPtXV1Rk+fPh8d39ssMEGdV9PnTp1iWuqqalJdXX1fNsnTJiQJIu0mwUAAKCoBCLwOTU1Nfn973+fJDnuuOPm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axkzZswC28eNG7fIcwIAAAArXpMKRP73v//lsssuS/Lpjo8///nPWWONNZIktbW1uemmm3L66adn1113zXPPPZfq6uq6sZ06dZrvvB07dszHH3+cWbNmpWXLlo2up0ePHov5SgAAAICmrEmdIfKb3/wmM2bMSEVFRe699966MCRJysvL84Mf/CCnnnpqpk2blosuuijNmjWra2/Tps185517ic3MmTOXXfEAAADASqNJBSJPPPFEkk8PQp3f7oyDDz44SfK3v/0trVu3TpJUVFSkvHz+L2VuW2Vl5SLVM3r06AU+XnzxxUWaDwAAAGgamtQlMxMmTEiSbLfddvPt061btyTJrFmz6gKR6urqjB8/vq7t8yZPnpwkKZVKi1RP9+7dF6k/AAAAsHJoUjtE2rdvn+TTMz/mZ9q0aXVfr7baamnbtm2S5P3332+w/4wZMzJjxowkSbt27ZZSpQAAAMDKrEkFIl/60peSLPgWuc8//3ySZO21185qq62WrbbaKkkybNiwBfZv3759OnTosDTLBQAAAFZSTSoQ2XfffZMkd9xxR8aOHTtP+7Rp03LttdcmSfbff/8kSZ8+fZIkAwcObHDOIUOGJEm23HLLpV4vAAAAsHJqUoHIIYccki222CJTp07NHnvskccffzxz5sxJdXV1nnjiiey00055991306pVq5xzzjlJkuOOOy7l5eV55pln8uCDD9abb8KECRkwYECSZL/99lvurwcAAABomppUIFJeXp77778/X/7yl/Pmm29m9913T8uWLdOiRYvstttueeWVV9KsWbPcddddWW+99ZIk6667bo488sgkydFHH5277rorM2fOzEsvvZQ999wzkyZNSseOHXPCCSesyJcGAAAANCFN6i4zSbL++uvnhRdeyF133ZV77rknb7/9dj766KO0b98+22+/fc4777z07t273pgbbrghw4cPzyuvvJJjjz22Xlt5eXluvvnmdO7ceXm+DAAAAKAJa3KBSJK0adMmJ510Uk466aRG9e/UqVOGDh2aCy+8ML/97W/r7iqzySab5Lrrrsuee+65LMsFAAAAVjJNMhBZHG3bts3VV1+dSy65JCNGjEj79u2z4YYbruiyAAAAgCZolQlE5mrbtm3drXgBAAAAGtKkDlUFAAAAWB4EIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABAAAACiclSYQeeGFF9KiRYvssssuDbZPmzYt5513Xnr16pWWLVumZ8+eueiiizJr1qzlWygAAADQ5FWs6AIaY8qUKTnqqKMyZ86cBtsnT56cnXfeOa+//nqSpKysLKNGjcoll1ySoUOHZvDgwamoWCleKgAAALAcrBQ7RL773e/m/fffn2/7EUcckddffz2tW7fObbfdlqqqqowePTp9+vTJE088kauvvno5VgsAAAA0dU0+EBkwYED++Mc/pqysrMH2hx56KEOGDKnre8IJJ6RFixbp3r177rvvvnTq1CkXX3xxJk6cuDzLBgAAAJqwJh2IDB8+PGeccUbKyspy9tlnN9jnpptuSpJsttlmOeaYY+q1dejQISeeeGKqqqry8MMPL/N6AQAAgJVDkw1EqqqqcsQRR6SysjI//OEPs++++zbY75///GeS5PDDD2+wfZ999kmSPPLII8umUAAAAGCl02QDkTPOOCNvvPFGdthhh1x22WUN9pkwYUKmTJmSJNl+++0b7LP55psnSUaMGLFsCgUAAABWOk3y1iv3339/fvvb36ZLly65995753uHmM+eC7LRRhs12Kdz586pqKjIyJEjF7mOMWPGLLB93LhxizwnAAAAsOI1uUBk1KhROemkk1JWVpbf//736d69+3z7zpo1q+7rTp06zbdfx44d8/HHH2fWrFlp2bJlo2vp0aNHo/sCAAAAK48mdclMdXV1jjrqqHzyySc555xz6s7/mJ9mzZrVfd2mTZv59mvRokWSZObMmUunUAAAAGCl1qR2iPzkJz/Jc889l969e+fSSy9daP/WrVsnSSoqKlJePv9sZ25bZWVlOnbs2Oh6Ro8evcD2cePGZdttt230fAAAAEDT0GQCkcceeyxXXHFFVl999QwcOHC+54Z81tzLZKqrqzN+/Ph069atwX6TJ09OkpRKpUWqaUGX6wAAAAArryYTiPzhD39IqVTKxx9/vMCzO5566qmUlZUlSW6//fa0bds2M2bMyPvvv99gIDJjxozMmDEjSdKuXbtlUzwAAACwUmkyZ4g0b948LVu2nO+jefPmSZKysrK655o1a5atttoqSTJs2LAG533++eeTJO3bt0+HDh2Wz4sBAAAAmrQmE4gMGDAgVVVV8308+uijSZKddtqp7rnjjjsuffr0SZIMHDiwwXmHDBmSJNlyyy2XzwsBAAAAmrwmE4gsruOOOy7l5eV55pln8uCDD9ZrmzBhQgYMGJAk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k7LuuuvmmmuuqWtr1qxZ3ddt2rSZ7xwtWrRIksycOXPZFQoAAACsNJr8DpGf/OQneeyxx9KyZcvce++96dixY11b69atkyQVFRUpL59/tjO3rbKyst74hRk9evQC28eNG5dtt9220fMBAAAATUOTDkTuvffeXHbZZUmSG2+8Mdttt1299rmXyVRXV2f8+PHp1q1bg/NMnjw5SVIqlRZp/e7duy9qyQAAAMBKoMleMvPcc8/lhBNOSJKce+65dV9/VufOnetuwfv+++83OM+MGTMyY8aMJEm7du2WUbUAAADAyqRJBiJvvvlm9t9//8ycOTOHHXZYfv7zn8+371ZbbZUkGTZsWIPtzz//fJKkffv26dChw9IvFgAAAFjpNLlA5I033shuu+2WiRMnZuedd86dd96ZsrKy+fbv06dPkmTgwIENtg8ZMiRJsuWWWy79YgEAAICVUpMKRMaPH5/dd98948ePz2abbZZBgwYt9Da5xx13XMrLy/PMM8/kwQcfrNc2YcKEDBgwIEmy3377LbO6AQAAgJVLkwpErrrqqowfPz5J8tZbb6Vbt25p1apVg4+nn346SbLuuuvmyCOPTJIcffTRueuuuzJz5sy89NJL2XPPPTNp0qR07NixwTNIAAAAgGJqUneZeeWVV+q+rq6uTnV19Xz71tbW1n19ww03ZPjw4XnllVdy7LHH1utXXl6em2++OZ07d17q9QIAAAArpya1Q2TIkCEplUqNeuyyyy514zp16pShQ4fmrLPOqrvrTJJssskmefjhh3PYYYetgFcDAAAANFVNaofIkmjbtm2uvvrqXHLJJRkxYkTat2+fDTfccEWXBQAAADRBq0wgMlfbtm3rbsULAAAA0JAmdckMAAAAwPIgEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAGg0Kqrq1NbW7uiywAAYDkTiACwyujXr1/KysoycuTIBfa755570rt377Rt2zbNmzdPixYtss022+See+5Z6jVNnTo11157bXbeeed06tQpbdq0yRZbbJGf//znmTZt2lJfDwCAxqlY0QUAwNJwxRVX5Kabblpov5NOOim33HJLkqRr167ZYost8vbbb2fYsGE5+uij89JLL+Wqq65aKjW98cYb2W+//TJq1KgkSXl5eUqlUl555ZW88sorueWWW/K3v/0tm2666VJZDwCAxrNDBICV3jXXXJPzzz9/of1uvPHG3HLLLWnTpk1uu+22jB8/PkOHDs2oUaPSt2/fJMnVV1+doUOHLnFNU6dOzQEHHJBRo0Zl7bXXzgMPPJCqqqpMnTo1d9xxRzp16pT//ve/2WOPPTJ16tQlXg8AgEUjEAFgpVVZWZmjjjoqZ599drp3777AvjNmzMgFF1yQJLn//vtzwgknpKysLEnSunXr3HLLLenatWuSLJVLZ26++ea8//77ad68eR5++OF885vfTPPmzdOuXbv07ds3999/f5JkzJgxGTBgwBKvBwDAohGIALDSuvjiizNw4MBst912efHFFxfYd8SIEdlqq61y3HHHZe+9956nvXnz5vnKV76SJBk7duwS1zY38DjggAOy+eabz9P+jW98I1/+8peTJM8///wSrwcAwKJxhggAK63y8vL0798/5513XioqFvwtbauttsqjjz66wD5zg5C2bdsucW3vvPNOkmSXXXaZb58ePXrkjTfeyJQpU5Z4PQAAFo1ABICVVv/+/dO8efOlMteIESMyfPjwJMluu+22xPO1aNEiyaeX48zPhAkTkiRrrbXWEq8HAMCicckMACutpRWGJJ+GK0myxhpr5Mgjj1zi+Xr27Jkkefnllxtsnzx5ct58880kyV577bXE6wEAsGgEIgAU3uDBg3P33Xcn+fT2vQva1dFYhx56aJLkrrvuyn//+9952s8+++zMnDkza6yxRg466KAlXg8AgEUjEAGg0MaPH5/jjz8+SXLggQfW3X53SZ166qnZeeed88knn2TPPffMo48+milTpuTf//53vvWtb+X2229PkvzoRz9Ky5Ytl8qaAAA0njNEACis6urqHHHEEfnf//6X9dZbry6kWBpatGiRwYMHp3///vn1r3+dPffcc54+6623Xk4++eSltiYAAI1nhwgAhXXaaaflqaeeSrt27TJo0KB06tRpqc7fsmXLXHrppfn4448zfPjwPP/88/n5z39e137VVVfZHUKh9evXL2VlZRk5cmSj+s+YMSNbb7113Rk9y8vs2bOzzTbbLFKtADR9dogAUEjXXXddbrzxxjRr1iwDBw7MZptttszWatasWTbddNNUV1fXXZKz++675+CDD15ma0JTd8UVV+Smm25qdP+ampoceeSReemll7Luuusuw8rmdd5552XYsGHLdU0Alj07RAAonHvuuSdnn312kuT666/Pvvvuu1zWve222/L222+nRYsWueGGG5bLmtAUXXPNNTn//PMb3b+ysjLHHHNM/va3vy3Dqhr28MMP57rrrlvu6wKw7AlEACiUgQMHpm/fvqmtrc2555673M7wmD59en76058mSX74wx9m4403Xi7rQlNSWVmZo446KmeffXa6d+/eqDHvv/9+dthhh9x7773p0aPHMq6wvnHjxuX4449PqVRKWVnZcl0bgGVPIAJAYTz22GM59thj6y5dufzyy5fb2v3798/YsWOz3nrr5YILLlhu60JTcvHFF2fgwIHZbrvt8uKLLzZqzBFHHJFXX301J510Um699dZlXOH/U1tbm2OOOSYTJkzI4YcfnnXWWWe5rQ3A8iEQAaAwzj///NTU1CT5dKdIq1at5vv4rKeffrru+aeffnqR1x0xYkSuvfbaJMkNN9yQ1q1bL/mLgZVQeXl5+vfvn6FDh2aNNdZo1JjVV189f/7zn3PzzTenefPmy7jC/+eyyy7Lk08+mQ022CADBgxYbusCsPw4VBWAwnjllVfqvp49e3ajx9XW1mbWrFl1Xy+qU089NXPmzMmhhx6affbZZ5HHw6qif//+ixxqDBo0aLkGIUnyzDPP5OKLL07Lli3zxz/+Me3bt1+u6wOwfAhEAFhllEqlBbbPmTNnsebdZZddFjr3ggwZMmSxx8KqZHGCjeUdhkyePDlHH310ampq8qtf/SpbbLHFcl0fgOXHJTMAAPD/+853vpMPPvggRxxxRPr167eiywFgGRKIAABAkl//+td54IEHsuGGGzo3BKAABCIAABTeq6++mh/+8Idp1apV/vjHP2a11VZb0SUBsIw5QwQAgEKrrKzMkUcemaqqqtx444356le/uqJLAmA5sEMEAIBCe/HFFzNixIgkSb9+/VJWVjbPY9SoUUmS9dZbL2VlZdlll11WYMUALA12iAAAUGjl5eVp2bLlAvvMvfV2ixYtUlZWlhYtWiyP0gBYhgQiAAAU2k477ZSqqqoF9unZs2dGjRqV//znP+nZs+fyKQyAZcolMwAAAEDhCEQAAFil3HnnnWnVqlVatWpVd/YHAHyeS2YAAFil1NTU1J35USqVVnA1ADRVAhEAAFaIRQ0rdtlll0aNOf7443P88ccvZlUNGzly5FKdD4AVTyACsBLoed5DK7oEWO5GXr7vii4BAFiFOUMEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4FSu6AACAVU3P8x5a0SXAcjfy8n1XdAkAi8QOEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAAAACkcgAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFIxABAABgidXW1qa6unq5rFVdXZ3a2trlsharLoEIAAAAi+WFF17IN7/5zXTp0iXNmjVL8+bN06tXr/Tv3z9VVVVLda177rknvXv3Ttu2bdO8efO0aNEi22yzTe65556lug7FIRABAABgkd1xxx3p3bt3Bg0alKqqqnzta1/L+uuvn//+97+58MILs9tuu2XWrFlLZa2TTjopRx99dJ599tm0bds2vXv3TufOnTNs2LAcffTR+eEPf7hU1qFYBCIAAAAskldffTXf/e53U1NTk7PPPjvjx4/Pc889l3fffTc33HBDkuTZZ5/NL37xiyVe68Ybb8wtt9ySNm3a5Lbbbsv48eMzdOjQjBo1Kn379k2SXH311Rk6dOgSr0WxCEQAAABYJOecc05mz56dc845J1dddVXatWuXJCkrK8vJJ5+cAw88MEmW+HKWGTNm5IILLkiS3H///TnhhBNSVlaWJGndunVuueWWdO3adamsRfEIRAAAAGi0GTNmpE2bNtlmm21y4YUXNthnm222SZKMHTt2idYaMWJEttpqqxx33HHZe++952lv3rx5vvKVryyVtSieihVdAAAAACuPtm3b5oEHHlhgn7nhRNu2bZdora222iqPPvroclmL4rFDBAAAgKWmpqYmgwYNSpLstttuy3StESNGZPjw4ctlLVY9AhEAAACWmttuuy0ffvhhkuSMM85Ypmv1798/SbLGGmvkyCOPXKZrseoRiAAAALBUjBs3Luedd16S5IQTTsgWW2yxzNYaPHhw7r777iTJFVdckdatWy+ztVg1CUQAAABYYrW1tenbt28mTZqUddddN9dcc80yW2v8+PE5/vjjkyQHHnhg3e13YVEIRAAAAFhiP/nJT/LYY4+lZcuWuffee9OxY8dlsk51dXWOOOKI/O9//8t6662X22+/fZmsw6pPIAIAAMASuffee3PZZZclSW688cZst912y2yt0047LU899VTatWuXQYMGpVOnTstsLVZtAhEAAAAW23PPPZcTTjghSXLuuefWfb0sXHfddbnxxhvTrFmzDBw4MJttttkyW4tVn0AEAACAxfLmm29m//33z8yZM3PYYYfl5z//+TJb65577snZZ5+dJLn++uuz7777LrO1KAaBCAAAAIvsjTfeyG677ZaJEydm5513zp133pmysrJlstbAgQPTt2/f1NbW5txzz83JJ5+8TNahWCpWdAEAAACsXMaPH5/dd98948ePz2abbZZBgwalZcuWy2Stxx57LMcee2xqamrSt2/fXH755ctkHYrHDhEAAAAWyVVXXZXx48cnSd56661069YtrVq1avDx9NNP142b+9yll17a6LXOP//81NTUJPl0p8j81mnVqtXSfZGs8uwQAQAAYJG88sordV9XV1enurp6vn1ra2vrvp41a1bdmMVZa/bs2Y0vEhZCIAIAAMAiGTJkyGKNK5VKizxmzpw5i7UWLIxLZgAAAIDCEYgAAAAAhSMQAQAAAApHIAIAAAAUjkAEAAAAKByBCAAAAFA4AhEAAACgcAQiAAAAQOEIRAAAAIDCEYgAAAAAhSMQAQAAAAqnYkUXAAAAsKL1PO+hFV0CLHcjL993RZewQtkhAgAAABSOQAQAAAAoHIEIAAAAUDgCEQAAAKBwBCIAAABA4QhEAAAAgMIRiAAAAACFs0oFInPmzMnll1+eL37xi2nZsmXWWmutnH766ZkyZcqKLg0AAABoQipWdAFLy6xZs7LffvvlscceS5KUlZVl3Lhx+eUvf5knnngizzzzTNq3b7+CqwQAAACaglVmh8ipp56axx57LOXl5bnyyiszbdq0fPzxxzn22GPzxhtv5Nxzz13RJQIAAABNxCoRiLz++uu59dZbkySXXHJJfvSjH6Vt27bp0qVLbrvttmy88cb57W9/mzfeeGMFVwoAAAA0BatEIHLzzTentrY2q6++en70ox/Va2vevHlOO+20lEqlPPDAAyuoQgAAAKApWSUCkaeffjpJcuCBB6ZFixbztO+zzz5JkkceeWS51gUAAAA0TatEIPLuu+8mSbbffvsG23v27Jn27dtnxIgRy7MsAAAAoIla6e8yU1VVlcrKyiTJRhttNN9+Xbt2zXvvvZepU6c2+m4zY8aMWWD76NGj674eN25co+ZsKqqnfryiS4DlbmHv6abMe5Yi8p6FlcvK/J5NvG8pppXpffvZ37mrq6uXypwrfSAya9asuq87deo0335z28aNG9foQKRHjx6NrmPbbbdtdF9gxehx44quAFgU3rOwcvGehZXPyvq+nTBhQnr27LnE86z0l8w0a9as7us2bdrMt9/cs0Vmzpy5zGsCAAAAmraVfodI69at675u6EDVucrLP81+5l5e0xifvSSmIVVVVRkxYkS6deuWrl27pqJipf/rZBkaN25c3U6iF198MWuuueYKrghYEO9ZWLl4z8LKx/uWRVFdXZ0JEyYkSTbbbLOlMudK/xt8s2bNstpqq2XatGn58MMP07179wb7TZ48OUlSKpUaPff85vqsDTbYoNHzwVxrrrlmo/7/ApoG71lYuXjPwsrH+5bGWBqXyXzWSn/JTJKss846SZL3339/vn3Gjx+fJGnXrt1yqQkAAABoulaJQGSrrbZKkgwbNqzB9vfeey8ff/zpqdFzwxMAAACguFaJQKRPnz5Jkvvvvz81NTXztA8ZMiTJp9trFnQnGgAAAKAYVolA5KCDDkr79u0zatSo/OY3v6nXVlVVlWuuuSZJst9++62I8gAAAIAmZpUIRNq2bZtTTjklSXLWWWfl+uuvz7Rp0/Kf//wn++23X955551UVFTk1FNPXcGVAgAAAE3BKhGIJMmFF16YPfbYI9XV1TnjjDPSvn37bLLJJnn88ceTJJdffnk22mijFVwlAAAA0BSsMoFIy5Yt89BDD+XSSy9N586d657v3r17/vCHP+Tss89egdUBAAAATUlZqVQqregilrZZs2blrbfeSosWLbLpppumrKxsRZcEAAAANCGrZCACAAAAsCCrzCUzAAAAAI0lEAEAAAAKRyACAAAAFI5ABAAAACgcgQgAAABQOAIRAAAAoHAqVnQB0JQ8/vjj2XfffZfJ3G+88UY22GCDBtuOPPLIDBs2bInmP+ecc/Ld7353ieYAAAAoCoEIfEZ5eXlmzZq1TOauqJj/223ixIl57733lmj+qqqqJRoPq7Lnn38+zz//fCoqKnLKKaes6HKARTR79uyUl5fP87103Lhx6dSpU1q1arVY844ePTrvvPNOtt5667Rv335plAqrvJ/97GeZM2dOttlmm4V+kDhw4MBMnz49m266aXr37r1I64wYMSL33HNPTj/99HTu3LnBPjNmzMgxxxyTJPnlL3+ZddZZZ5HWAJfMwGc0b9687utSqbTEj/fff7/BuT+vdevWSZKLLrpokdfo1q1bvTmgqKqrq3Pttddm6tSp87Q98cQTOfPMM3PBBRfM01ZbW5szzzwz7777bqPXOvLII7PBBhss0ePmm29eotcLK6Pq6upMmjQps2fPbvSYESNGpHfv3jn77LPnaTv//PPTo0ePfP/738+cOXMWuZ7f/va32W233dKpU6cMHz58kcdDEV133XX56U9/mn/9618L7XvxxRfnpJNOyv3337/I6wwePDiXXHJJ1l133Tz99NMN9mnTpk0eeuihDBo0KNXV1Yu8BtghAp+xoF0c83P99dfn9ddfz7777puDDjposeZu0aLFIq/7eQsKXGBVN2PGjOyxxx559tln8/DDD+eRRx6p956b++lxy5Yt5xn72GOP5brrrst1112Xn/3sZ/m///u/ha5nVxcsnjfeeCNbbLHFQvttt912ef7555MknTp1yvvvv59hw4Zl9913z/77758kmTVrVv7yl79kypQp6dSp0yJ/H6ypqcnAgQOTfPpvRJcuXRbx1UAxzf1e2qlTp4X2bdOmTb3/LopBgwYlSb7whS9k++23b7BPWVlZOnTokIkTJ/pwkMVihwh8xuKECkOHDs2tt96at956a6nPDTRO27Ztc+yxxyb5NOD4/GUxc99/Db0Pf/Ob3yRJ1lhjjfTr169R69nVBYunZcuW2WyzzbLDDjukXbt2SZJtttkmO++8c3beeed85StfSfLpe3qubt265brrrkuS9OvXLzNnzkyS/O1vf8uUKVPSs2fPXHjhhYtcy7333lsXbFZWVuYHP/jBkrw0WCXV1tbmk08+yezZs1MqlZIkzZo1S9K4D/TmfjhRUVGR2trazJ49O1OmTMmUKVMWOG78+PF1u0J+/OMfL/Dn6LkBzdy6YFEIROAzFie0mPuPcEOfPDd27qWxxc82QYquX79++fGPf5zk023w9913X13b3B+SPv/D0rvvvpsHH3wwSXLDDTc06tOuxK4uWFybbrppXnvttTzzzDPZeOONkyS///3v849//CP/+Mc/6oKPz7/Hjj322Jx44okZOHBgXZj4y1/+MklyxRVXLHLAOGXKlJx33nlJkgMOOCAbbLBB/vznP+f6669fkpcHq5xJkyalU6dOadmyZcrLy1NWVpYPPvggSfKDH/wgZWVlC3zMvazmkksuSbNmzdKyZct07Ngxp59++gLX/d3vfpeampqsueaadR94zJ49O9OnT68LReea+/20vNyvtiw6l8zAZzT0D+mkSZOSfLqdtlWrVvP0+ewvWjU1NZkzZ05mzJiR1VZbrV6/srKy+a47Y8aMJMlPf/rT/PSnP12s2isrKxdrHKxK+vfvn5dffjlbbbVVDj744Lrn577/Pv8+/MUvfpHa2trst99+OeSQQ5ZrrcD8zf3eWllZmRkzZqRVq1b51a9+lWbNmqW6ujqvvPJKnn766WyxxRY54IADMn369MyePXu+By9+3ve///2MHj06nTt3zs0335yRI0dmxx13zNlnn5211147hx566LJ8ebDSqKioyGabbZZ27dqlefPmadasWZ577rlUVVVlk002ydprr73A8f/6178yderUrLfeell33XVTU1OTysrKBY6rra3NLbfckuTT9+rcgPSKK67IhRdemN133z1DhgxZei+SQhOIwEIcfvjhefzxxxfa78wzz8yZZ55Z9+d//vOf6d69e6PW+MIXvlD3SdniWpxrM2Fld/XVV+fll1+u99xqq62W//73v/nWt75V99w777yTJPn444/rPmlKUnfIW2VlZb3nk6RPnz715vgsu7pg0Q0ZMiQ33HBDWrVqlYqKirqDx88555y6O7yMHz8+SfLyyy/nm9/8Zr785S/nZz/72XznfPnll+t2h2y11VaNuoX9eeedV3d2yHXXXZdu3bqlW7duufjii3PBBRfk6KOPzrRp03LCCScs0euFVUHHjh3z2muv1XuuZ8+eGTVqVE4//fR8//vfX+D4r33ta3nhhRfSt2/fXHzxxY1a829/+1vefffdVFRU5KSTTqp7fu57vTE/85ZKpTz77LP5+9//nv79+zdqXYpJIAIL0bp163Tt2jWtW7dORUVF3SfMU6dOzYQJE+r6denSJe3atUt1dXWmT5++SNcx3nXXXUu9biiCYcOG1f1i0xgzZsxo8P32xBNPzPNcjx49FjhPYlcXLIoPP/wwf/3rX+d5fu5la581duzYDBo0KL17907fvn3TunXrNG/ePOXl5bn77rvz8ccf51vf+lbat2+fmpqazJo1K2usscYC1y+VSjnvvPNy5ZVXJvn0DjXHHXdcXfuPf/zjTJs2LVdccUW+/e1v58UXX8wvfvGLurNOgOXj6quvTvLpz9Zrrrlm3fNzd4os6JLTt956K3fddVfuuuuujBw5Muuss45AhAUSiMBCNPSDWpLssssueeqpp+oulbngggtyxhln1OszcuTIZV8gFNjcH47OPvvsXHXVVUtlzkMPPTR/+tOfFnhOiF1dsOiOOOKIfPOb30ybNm3SrFmzfOUrX8mbb76ZDz/8MGuttVaS5B//+Ed23XXX7LvvvrnrrrvSpk2beX75eeqpp/Lxxx/nggsuyAYbbNCotadOnZqTTjopf/zjH5MkJ554Yi677LJ5+l1++eVp3bp1Lr744tx000155JFHcskll+TYY491PgF8zl/+8peF/qw7evToRZrz6aefnu8tdud+2Di/OzfuvPPO89w+23ldLIxABBbDnXfemaeeeirdu3fPdtttlz/96U+LPdcGG2ywxLfvnOt3v/vdfLf4w6poWV52sqBzf+zqgkXXunXreoeffvTRR6moqKi789JnlUqldOjQYams+8gjj+Tkk0+uu0Tn3HPPbTAMmeuiiy7K1ltvne9+97sZNWpUvvWtb+XCCy/MiSeemEMOOSSbbrrpUqkLVnaDBw/O4MGDl+qcC7pj1GdDyYkTJ+bBBx/MAw88kA8//DBJMnz48Ky55po58sgjs/baa+eHP/zhfMMTmMv/IbCI3n333Zx66qlJkl/96lf5y1/+skTzzf3hsH379vW2BTbWnDlz8t///jfJp59aQ5FMmzat3p9vvfXWPPnkk4s11ymnnJKvfe1rdX92SQssfW+++WY++eST1NTUZMKECVlzzTXz+uuv17W/++67SZZO2PmXv/wl119/ff7xj38k+fR8od/97nf1DlxuSKlUyr777ps333wzP/zhD/O73/0uo0aNyk9+8pPcfPPN+de//tVgiANFc+ONNzb6DJHGePDBB/PUU0+lVatWqaqqmqd91qxZSZKHH3443bp1S01NTb32Bx54IPvvv3+aNWuWhx56KMn8d5PAXP4PgUUwY8aMHHTQQZkyZUr69u2bb37zm0sciLRq1SpJctBBB+V3v/vdIo9/9913s+GGG9abC4pi3333zZZbbpkddtghSfLGG28s9u6NI488MsmnP+BdddVV89wpai67umDxXXvttbn11lvr/jxu3LhsscUW8/Sb+8vQq6++mh//+Mdp3bp1WrRoUe+Wnz/84Q/Trl27VFVVpbKyMn379q17HyefbpV/5plnknx6QPqVV16Zjz76KAcffHC23XbbfO9732vwVtt33313Tj/99PTs2TMDBw7MBRdckGuvvTa33XZb/vCHPwhDYBmorKzMaaedliQ5/fTTc8UVVyRJXnjhhTz55JP561//mueffz7Jpx+GrLvuujnyyCNz1FFH5cADD8yoUaOy44471l1WM2fOnCRZpDP9KCaBCDTSzJkzc8ABB+SNN97INttsk9/+9rdLZd6WLVsusP2VV17JBx98kK5du+ZLX/pS3Un8DVnQFn9YFX3ve9+r9+e5534cccQRjT5sdfXVV8/EiRPrAsWuXbuma9eu8+1vVxcsvr322ivrrrtuBg8enGeeeSaHHHJIvZ1Zc809IHXy5Ml1n/R+3qBBg+r9eaeddqr353333Tc33nhjNt544+y4445JkmeffTYPPPBAHnnkkbpfvj5v1qxZmThxYiZPnpw11lgj7dq1y/XXX5+f//znzv6Bz7j99tszdOjQBfZp7AcIp512WkaOHJm11lorZ511Vl0gcsstt9TdgrdNmzaprKzMAQcckL/85S8L/Ll3biBihwgL4/8QaIQxY8bkoIMOyrBhw7LRRhtl0KBBy203xoMPPlh3PeWbb76ZL37xi8tlXVgZLckPPo0da1cXLL5DDz001dXVGTBgQMrKynLllVdm/fXXn2//HXbYIZMnT66701t5eXm22GKLvPrqq3nnnXey/vrrZ86cOamqqmrwPfyd73yn3p/feOONJEnv3r3nG27Mnj07SdKpU6d6d5gRhkB9L774Yl588cWlMteRRx6ZP/3pT7n88svrvddOPvnkTJo0KWeeeWbeeOON9OvXL61bt17oh4Bz38c+LGRhHJcNC1AqlfK73/0um222WYYNG5Yvf/nLefrpp+t9KlxbW7tcamnVqlU22WST5bIWrKzmXl+8OD5/LfL8NGZX11//+tc899xzmTp16gL7+kGNIrr++uszevTo7LXXXgsMQ5JPd3117NgxLVu2TLNmzeZ5z5SXl6dly5bp0KFD2rZtu9C1536a3bt37/n2mfvvyNxPmIGG3XjjjSmVSgt8bLfddo2aa/fdd88zzzxT71bYSfLVr341f/rTn+p2eTXW3MvuFvY9G+wQgQW44YYb6rbUfuMb38h9992Xzp07Z8qUKamurs7HH3+cZ599NkmW2e343n777STJJptsstA1luSXQVgVzP0B6Pnnn8+xxx7bqDHTp09PsvR++bGrC+bvvffey8UXX5zk091S8/slZ/XVV1/iM7o+b9q0aXVnECzol7QZM2Yk+fRWvZWVlXaGwHKypN8vp0+fnrfffjvTp0+vu8V2Y2/NTXEJRGABTj311IwfPz7Tp0/PVVddVbcd94EHHsgJJ5xQr2+vXr0Wa40F3cmitra27kC4r3/96wuda+LEiYtVA6wq5gYio0aNyqhRoxZp7OfvWLOk7OqC+mbNmpXDDz8806dPT7NmzfLOO+/knXfeabDvsvgl5u9//3vdNvrmzZvPt9/cO90kyVNPPZW99957qdcCK4MpU6akrKwsLVu2rLtkbUl3NtbW1qa6ujpz5szJzJkz06lTp6V28GmLFi1y1FFH1R283LVr15x99tlLZW5WXS6Zgc9o6DZ/l156aa677rp61yYfeeSRqaioSIsWLbLDDjvk17/+dfbdd98Fzj2/7fhzP51uyIMPPpj3338/SepuE/jmm2/mrbfequvTokWLbLzxxtl4441TKpUWWAOs6m655Za6bbpXX311kk8Pcfzs9t2vfOUrSZInn3yy3vOHHXbYUqnBri6YV6lUSt++ffPvf/8766+/ft3dlW688cbMnDmz7vHqq68m+fR72/jx47P33nvnkEMOyZFHHpljjz02xx57bL27zBx77LE5+uijc/jhh+eAAw6ou8VuQ+644466r/fee++cccYZDQahn711989//nPfWyms008/PR06dEirVq3qBSJzP3Do169fysrKFviYe8vdn/70pykrK0uzZs3SsmXLtGvXLl27ds3o0aOXuM65l683b94855xzTr7//e/nvvvuywcffJDNN998iedn1WaHCHxGQ4FIQ1q1apXRo0fnC1/4QqMvlZnf3MOGDUttbW3d3THm+t///peTTz45SbLzzjtnl112SZKcddZZefTRR7PbbrvltNNOy/77758RI0Y0qgYokrmf8q633npLdV67umDxHHHEEXn66adz33331d0eu6Kiot7hwnO/F1ZUVGTmzJn5+9//Pt/5Pn+XmSQ5+uijG+z77rvv5pFHHkmSHHDAAXnmmWdy/fXX509/+lN+//vfZ9ddd03y6RkjI0eOzJprrplSqZR//vOf+eUvf5nTTz998V40rMR23HHHtG7dOq1bt06zZs2W2k6OuTtEpk+fXu/g4sU195LXOXPm1P3sDI0lEIHPWJQzBObeEnBJ527oNrrvvfdeDj744Hz44Ydp37593S1+J06cWHe7zscffzyPP/54Ntxww5x99tk5/vjjHRwF/7+ampo8/PDDSRoXTHzWlClT0qFDh/m2L86urvLy8my66aZJ/t+uriQ+eaYwysrKcvDBB2ePPfZIu3bt8oc//GGh/Xv06JHx48enTZs2adGiRSoqKlJWVlbvLjO9evVKbW1t5syZk8rKyrrbYn/eWWedldra2qy99toZOHBgZsyYkX79+uX+++/P7rvvniuuuCI//OEP63aWnXbaadloo41yyCGH5Ic//GE22WST7Lnnnkv97wWashNPPDEnnnhig2233nprOnXqVPe9riHDhw/P7bffnp/+9KfL9CyeuTu9pk6dmrXWWqte25NPPpnf/OY3OeOMM7L99tsvszP/WHn5PwI+47O7OBa2BbAxj89+Mr2w3SelUikvvfRSTjnllHz5y1/Oa6+9ljXXXDOPPfZY3S9PXbp0yTvvvJPnnnsu3/72t9OqVau88847+f73v5/11lsv1157bd0ZClBk11xzTUaNGpXVVlst++yzzyKNveOOO7LTTjvlnnvuaTD8GDZsWCZPnpzf/OY39Z5f0K6uL37xi9l9993z17/+NT169MiIESMyYsSIHHPMMYv3AmEltSifBjdr1ixf+MIX0q5du7Ro0aLB8wvmbsFv1apVOnfu3GAgcvfdd+fBBx9Mklx11VVp3bp1Vl999dx333256qqr8oUvfCH77rtvnnnmmQwaNChdunTJ97///Rx88ME59thjU11dnUMOOWSBl+NAkVx22WU58cQTc/jhh+e+++5rsM+oUaOy55575qqrrsrmm2+ep556apnVM3369JRKpQbP7RozZkzuv//+7LjjjvXOB4I6JaDO448/XkpSSlJq2bLlEj9atGhRN99///vfunXefPPN0o033ljq379/6eSTTy59/etfL7Vv376ub5LSUUcdVRo/fvwC6/3f//5XOuOMM+qts/baa5d++9vfLuu/KmiSpk+fXjr//PNLZWVlpSSlq6++ep4+X/nKV0pJSk8++WSDc5xyyil176cxY8Y0at133323tPnmm5eSlNq3b18aMWJEqVQqlT7++OPSBhtsUO+9veGGG5ZuuummUlVV1WK/TljZnX766aUkpa997WulY445pu6x//77l5KUNt988/mOnfsefueddxa6zgsvvFBq3bp1KUnp4IMPbrDPJ598Upo6dWppk002KSWp9z20srKytPXWW5eSlFq3bl26//77F/3FwipiypQppYMPPrju+9nee+9d+uijjxrsW1tbW/rVr35VateuXSlJqaysrHTmmWeWZs6c2ah1kpS6dOlS7/kbb7yxlKR06KGHNrrmc889t5SktM466zR6DMUiEIHPGDx4cN0/8kvD+++/Xzff22+/Xff82LFjSx07dqz3S1KS0mqrrVbq27dv6eWXX16kdd57773SIYccUjfPcccdt1Tqh5XBzJkzS4MHDy794Ac/qPe+OvPMMxvs/9WvfrWUpHTBBReUqqur67V9/PHHpY022qiUpPTlL395gevW1taWhg0bVjr55JNLrVq1KiUprbnmmqUXX3xxnr7PPfdc6dvf/nZdv7l9r7nmmkb9cAirmlNPPXWe74GffXzxi1+c79gvfelLpSR1weP8vPjii6XVV1+9lKTUq1ev0sSJExvsV1VVVdp7771LSUq77LJLqaampl772LFjS5tuumndL3WnnHJK6ZNPPln0Fw0rsWeeeabUq1evUpJS8+bNS7/4xS9KtbW1Cx03cuTI0s4771z33t58881Lw4cPX+CYSZMm1f1c/FmDBg0qJSn16NGjUR9YDB8+vLTOOuuUkpR+9KMfLbQ/xSQQgRXkpJNOKjVv3ry05ZZblk477bTSgw8+WKqsrFyiOZ966qnSLrvsUpo0adJSqhKark8++aS0/fbbl5o3b17vF6n11luv9Ne//nW+4w488MC6vuXl5fV2dX12nmuuuaZujF1dsHT169evlKQ0YMCAes+/9dZbpSSlDTbYYL5j5+66evXVV+fbZ/To0aUuXbqUkpQ6depUevPNNxvsN2nSpFKfPn1KSUpdu3YtjR07tsF+H330UWmLLbaoe9+ecsopjXiVsPKbPn166Uc/+lGpWbNmpSSlnj17lp5//vlFmqOmpqb085//vG6Otm3blu6555759h83blzd9+jPBpSTJ08ude3adYFhakOPdu3alT744IPF/jtg1SYQgRVk8uTJtszDEvr5z39e71OnAQMGlGbPnr3AMW+++WZpu+22mycAmfvo3Llz6bvf/W5p1qxZdWPs6oKl68QTT2wwEHnvvfdKvXr1Ku2www7zHdujR49SkgZ3Y33W2LFjS3vttVfppZdemm+fCy64oNSsWbNS69atS0OHDl3gfJWVlaUTTzyx9O1vf3uB/WBVcs8995QqKipKSUqHHHLIEu2OGjJkSKlTp06lFi1alO6888759nv33Xfrvj9+/pKcf//736UDDzyw9MUvfrHUq1evBT6+9KUvlfbff//SsGHDFrtmVn1lpZIj7gFYOc2cOTOXXXZZDjzwwGy99dbLdK3vfve7+d3vfpfNNtssO+64Y/r06ZPddtttvne1aIynn346F110Uf785z+nU6dOS7FaaNr69u2bO++8MwMGDJjvXSzmp1u3bvnoo4/yz3/+MzvuuOMS1/LEE0+ksrIy++23X6P6l0qleQ53hVXZrbfemtmzZ6dfv35LPNdLL72UkSNH5pBDDlkKlcGSE4gAQCN88sknad26tdtbAwCsIgQiAAAAQOGUr+gCAAAAAJY3gQgAAABQOAIRAAAAoHAEIgAAAEDhCEQAAACAwhGIAAAAAIUjEAEAAAAKRyACAAAAFI5ABABYpmbMmLGiSwAAmIdABABYpg444IAcfPDBGTp06CKNq66ubnTf8847L7///e9TU1OzqOU1GR9//HGuvPLKlEql+fZ57rnn8sorryy/ogBgFSYQAQCWmWnTpuWf//xnHnjggfz6179u9Ljf/va32WKLLfLSSy8ttO/EiRNz/fXX51vf+lb233//BQYKnzdlypRMmjQpM2fOXKRxC1NdXZ0pU6akqqqqUf2HDx+e7bbbLueee25OPvnk+dZy+eWXZ4sttsjRRx+91GoFgKKqWNEFAABN3x//+Mc88MADadWqVVq1apVmzZrN06e2tjazZ8/OjBkz8tOf/jQbbbRRHnvsscyZMyetW7fOtdde26i1Kisr079//3z44Yf52te+lvPPPz8XXXRRg2smya9+9atUVVWlQ4cO+dWvfpWysrJGv67TTz89d9xxR6P7L6r77rsvhx566Hzba2trc+211+YnP/lJZs6cmYqKinzyySf56KOP0q1bt3p9S6VS3S6bk08+eZnVDABFIRABABZq+PDhGThwYKP7n3766UmSP//5z0mS4447LmussUajxrZp0yb/+te/8q1vfStDhgxJ//798/TTT2fgwIHzzDFp0qRcd911SZJf/vKX6dWrV6NrTJKWLVumU6dOadWqVVq3bj3fMGXChAmZOnVq2rZtu9DXUSqVUlVVlZkzZ6Z58+bz7Td48OBccMEFGTZsWMrKynL00Uenf//+WX/99Rvs//rrr2fSpEn5+te/nt69ezf+RQIADSorLc39oQDAKum///1vPvzww7Rq1SoVFRWpqKjIf/7znxx22GFZa6218sgjj6SmpiZz5szJjBkzsuWWW6ZZs2bp1q1bKisr8/rrr+fLX/7yIq1ZKpXSv3//XHTRRUmSM888M9dcc029PmeeeWauu+667L333nn44Yfrtc2ZMyfPPPNMdtlllyV67Umy88475+mnn85NN92U733ve4s9z9SpU/PAAw/kpptuyvPPP58k2XXXXXPWWWdlv/32m6f/hhtumHfffbdRc19xxRU555xzFrs2ACgaO0QAgIVaf/3159m5MPcA0+bNm2fzzTefZ8wdd9yRysrKNGvWrMHLRj4boDz44IP52te+Vq+9rKwsF154YdZZZ53cfvvt+cUvflGv/Y033sgNN9yQ1VdfPbfccku9tsrKyuy66655+eWX8+STTy7RjooPP/wwQ4cOTadOnXLcccct9jyvvfZatttuu7pzRTbZZJNceOGFefTRR3PGGWdkt912y/Tp03P00UfnzjvvzBprrJHWrVsnSQ499NC0bNmywXnffPPNvPLKK2nTps1i1wYARSQQAQCWiRtuuCHJp8HHf/7znwX2XdAdZY4//vgcd9xx9c4QmTNnTk444YTU1NTkd7/7XdZaa616Y9q0aZOtt946L774Yg477LD8+9//bvQlO5932223pba2Nt/61reWKHTYfPPNc/LJJ+f222/PxRdfnH79+qWsrCy///3v89577+X//u//8sILL+S5557Lrrvumn/96191IciNN96Y1VdfvcF5L7/88rzyyitp0aLFYtcGAEUkEAEAlrrHHnssw4YNS7t27TJmzJh06NChru2QQw7Jn//85wwYMCBHHHFEZsyYkU6dOtW1Dx06NDvuuGO9+T5/oOppp52WYcOG5cc//nH23XffBmu49tpr89RTT+XNN9/M0Ucfncceeyzl5Q3fYO/www/Pa6+91mDb6NGjk3x6sOwjjzyy8Bef5Jxzzsm3v/3teZ6//PLLc/TRR+dHP/pR1llnnRx44IG55557summm9adhbLhhhvmjjvuSLt27VJR0fgf1RalLwAgEAEAloGf/exnSZJvf/vb9cKQ5NPb5CZJ+/bts9pqq2W11Vara3v00Uez55575hvf+EauueaafOUrX6k3tqqqKt///vdzxx13ZJ999skll1zS4PpTp07Nxx9/nH79+uWUU07Jk08+mUsuuSQXX3xxg/3HjRu30F0sY8eOXWD7Z02fPr3B5ysqKvKvf/0rTzzxREaNGpXdd989tbW1+cIXvpD//e9/2XHHHfPQQw+lffv2STLfAKchi9IXAEh85wQAGqVPnz7p2bNn7rnnngX2+9Of/pR//OMfqaioyFlnnTVP+7hx45IknTt3nqdt8ODBSZInnngiW265ZU4++eRMnTo1STJr1qxssskmueOOO9K8efNst912+b//+78cf/zx2WuvvfLVr341a665Zlq0aJEOHTqkV69eOeWUU+rmvvTSS/Pss882WPPcS1PuvPPOlEqlukfbtm2z9tpr13uuVCrln//8Z5LkO9/5Tr3n5+5WWdDlK9/73vdyyCGH5L333stxxx2X7bbbLq+99lq+8Y1vZPDgwXVhSJK6u9507do1ZWVlDT7OP//8+a4FAMyfHSIAQKNMmTIlo0aNSkM3qKutrc2sWbMyffr0XHvttUmSrbbaKk8++WQ22GCDuktgSqVSxowZkyRZc80155nn6quvzp577pmzzjorb775Zn7zm99k0KBB+eMf/5gddtghW2yxRUaNGpU5c+bU3X0m+TQ46NKlS7p165ZNN900q6++erp27ZrVV189q6++eq644op8+OGHOf744/Paa6+lVatW9dad34Gli2th8/3mN7/J4MGD88ADD9Q9t956681zRsncv+sNNthgnsuG5po0aVImTJiwhBUDQPEIRACARmnevHmSeXc/jBo1qt4v6xMmTMh5552XWbNm5YQTTsjRRx9dF4h8+OGHqaysTJKss846Da6zxx575JVXXslFF12Uyy+/PDNmzMh6662XJPnBD36QF154ITvuuGN69+6djTfeOL169UrPnj3r6mvIV7/61ey6667ZbbfdUlVVNU8gsqCxi2N+89XW1uaxxx7Lz372s0yfPj09evTIFVdckWuuuSa33nprdtppp/Tt27de/yR57rnnFnio6vnnn1/XFwBoHIEIANAocw/t/PzhnS1btsw222yT2bNnZ9q0aenUqVNuueWW3H///fnDH/6Ql19+ua7vK6+8kiTp3r17vbNDGlrrZz/7Wfr06ZMPPvigbjdJnz59Fuksj7m+/vWv5+23357n1sGN8eGHH9ZdurIk/vCHP+Scc87JuHHj0rx585xzzjm58MILM2PGjLqzUM4888zsvffe6dq1a5L/d2vjxljQnXoAgHkJRACARplfKLDGGmvUnanxWVtvvXWS5D//+U8qKyvTpk2bun5bbrllo9bcZZddFq/YBixOGJJ8egvfgw46qN5zEyZMyKOPPrpI8xx88MG59dZb86UvfSm/+tWvsskmm+R///tf9txzz0yfPj2XXXZZ/u///i+/+MUvcuWVVyb59NyUJOnXr998L8N58803kySzZ89e1JcGAIUmEAEAlomePXtm3XXXzahRo/Lcc89lt912qzs0tXfv3o2eZ8aMGWnbtm3dn2+55ZacdNJJi1zP+++/n549ey7yuE6dOuUPf/hDveeGDh26yIFImzZt8uijj9ZdTvOf//wne++9d+bMmZMnn3wyX/jCF3LhhRfmpptuSv/+/dOyZcvMnDkzSXL//fcvdP65fQGAxnGXGQBgmdl9992TJH/5y1/ywQcf5LXXXkuS7LXXXo0a/69//StbbrllvctuFvcA1M+fG7IizA1D7rzzzmy99dZ1YcgGG2yQM888M9XV1Zk2bVoef/zxJMnbb7+dUqmUIUOGJPl/d7WZe6DsL37xi7o73PzoRz9aMS8KAFZSAhEAYJk59NBDkySDBg3KXXfdlVKplF69emXzzTdv1PiBAwfm7bffzmmnnVb33Nxgo0ePHpkwYcICH3/5y1/mGbcivfvuu/nmN7+Zvn37Zu21187QoUOzwQYb5Prrr89tt91Wd67KSy+9VG/c3EBojTXWWO41A8CqyiUzAMAys/vuu+cLX/hCRo8enV/84hdJkhNOOKFRY6urqzNw4MAkSf/+/euen7tDpLy8fL53XpmrQ4cO84xbVEvrUNWpU6dmxx13zPjx4/ONb3wjf/zjH9OlS5fcfvvtOfPMM7PJJpvktNNOyw9+8IOMGjWq3ti5gcimm266xHUAAJ8SiAAAS6ympiYvv/xynnzyyUycODGXX355kk/vFvPd7343l156aSZPnpyOHTvmBz/4QaPm/POf/5yxY8dmm222qXe4ann54m1wXdxQY2kdqtq+ffvcddddGTp0aH7yk5+krKwsP/vZz/KTn/wkPXr0yODBg/PCCy8kSaqqqurGVVVV1Z29ss022yzWawAA5iUQAQAW2cSJE/P8888nScaOHZvOnTtn6tSpSZLtttuuXt+tttqq7utjjz02nTp1atQav/zlL5Mkp5566tIoebEtrUNVk2S33XbLbrvtltGjR+ekk07K4MGD06tXrzz66KNZZ5116s4K+exulvvvvz+TJk3Keuutl4022mjJXgwAUEcgAgAs0NSpU/Paa6/lo48+SpKceOKJmThxYl37nDlz0q5duxx88MHZbbfdsscee9S1Pffcc+nbt2/dn3/zm99k6623zre+9a0Frvmvf/0rzzzzTDp37pzDDjtsKb+iFWfmzJn55S9/mUsvvTTTp0/PTjvtlD/96U91l/688847Sf7fpT61tbV1wdBn/x4bMnv27LRo0WIZVg8AqxaBCAAwX7Nnz84666yTKVOm1D03ceLENGvWLNtuu2322muv7LXXXtl6663rXcpSKpXyq1/9Kueff34qKyvTu3fv9O7dO1deeWWOP/74DB06NFdffXXat2/f4LqXXXZZkuS4446b72GotbW1+fjjjxdY/2frXpBSqdSofo3V0HyVlZXZdttt8+abbyZJTjnllFxzzTV1d56pra3NX//61yTJZptt9v+1dy+h0PUBHMd/NspEyWVh4bYhJUx2bOZRE8poMlu3sNCkKIloFKmZME121IySlTQL5bK1YjHFUi4Lwk5ZaOi4jHcxPdOrGRN6et56z/ezPOf8z2X77fz/f0mS3+9XJBKRxWLR4ODgp897enpSXV2dvF6vnE7nj6cVAQBgJgQRAADwqczMTDmdTq2trSknJ0etra1qb29Xa2ur8vLyUo7Z29vT3NycDg4OJEkOh0MbGxvKyspSLBbT4uKigsGgwuGwBgcH1dPTo8rKysT4SCSS2B1mYGAg6f6/Y8P19bUKCwv/yHfGYjFJ8QDT1dX14Vw0Gv10/ZFQKKRQKJR0/O3tLemYxWLR+vq6mpqatLS0pO7ubj0+Purh4UHn5+fy+Xw6OTmRxWKRw+FQJBKRx+ORJI2NjaXcYebi4kJSfBvfs7MzDQ0Nyel0fuvbAQAwK4IIAABIa3h4WC6XS83NzZ9Oybi7u5PP59P29rZOT08lxRdUnZ2d1cTERCIoLCwsqLy8XCMjI7q/v5fX65XX69XMzIymp6f1/v6u4eFhSfEFRKurq5Oe9fr6+qPvSDfu+flZklRUVPTpXytfcXNzo2g0KsMwUp63Wq26vLxMTIkJh8NJU2ECgYCOj4/lcrlkGIbq6+s1NTX14Zrc3FxJ0srKinZ3d3V7eyspHpD4OwQAgK8hiAAAgLSsVqusVmvaawoKCvT29paIITabTUtLS6qpqUm61u12q7GxUX19fTo6OlJDQ4MmJyclxXeWOTw8lCT19vamfNbLy4skqbS0VJeXl2nfa39/X79+/ZIkGYah7OzslNdFo1FJ0vz8vDo7O9PeM522tjbt7Owk7pfKv7cC7ujoUH9/v15eXlRRUaFAICC73S6bzaaHhwcVFxdra2srMa3mN5fLpeXlZZ2enur6+loZGRmy2+0aHx//8bsDAGA2Ge9/etIsAAAwJcMw1NLSIrfb/aWFUGOxmILBoGpraz/sTHN8fKzR0VFtbm4qPz8/adzq6qr6+/u/HUSurq5UUlLyvY/6C/x+v6qqqmS32xPhwzAMud1ueTwelZWV/bcvCADA/xRBBAAAAAAAmA6TTAEAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOkQRAAAAAAAgOn8A1UY6RPDQttAAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1280x960 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "## 调用外部自定义函数绘制柱状图\n",
    "mytools.show_bar(df,'政治面貌')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 描述统计\n",
    "## 双变量描述统计"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.8.10 64-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10 (tags/v3.8.10:3d8993a, May  3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "b76efbdc9968242b8d4bc843e890bded7c85c5b2a7b8afc7723bdfba735fcbdd"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
